#include "game_tar.h"
#include "game_log.h"

CGameTar::CGameTar() : _isOpen(FALSE)
{
}
CGameTar::~CGameTar()
{
  if (_isOpen) {
    close();
  }
}

BOOL CGameTar::open(const char *filenmae)
{
  if (_isOpen) {
    close();
  }

  if (MTAR_ESUCCESS == mtar_open(&_tar, filenmae, "r")) {
    _isOpen = TRUE;
    return TRUE;
  }
  else {
    return FALSE;
  }
}
void CGameTar::close()
{
  if (_isOpen) {
    mtar_close(&_tar);
    _isOpen = FALSE;
  }
}

BOOL CGameTar::find(const char *name)
{
  return MTAR_ESUCCESS == mtar_find(&_tar, name, &_header);
}

int CGameTar::getSize()
{
  return _header.size;
}

int CGameTar::read(void *buf, int size)
{
  int ret = mtar_read_data(&_tar, buf, size);
  if (MTAR_ESUCCESS == ret) {
    return size;
  }
  else {
    C_LOG("mtar_read_data() failed, %d", ret);
    return 0;
  }
}
